/**
 *  Copyright (C) 2008-2013  Telosys project org. ( http://www.telosys.org/ )
 *
 *  Licensed under the GNU LESSER GENERAL PUBLIC LICENSE, Version 3.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *
 *          http://www.gnu.org/licenses/lgpl.html
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */
package org.telosys.injector;

import java.util.HashMap;

import javax.inject.Provider;

import org.telosys.injector.aop.InterceptorProvider;
import org.telosys.injector.impl.InjectorImpl;

public class InjectorFactory {

	public final static Injector createInjector(String name, InjectorConfigurator configurator) {
		
		//--- Injector configuration initialization
		InjectorConfiguration config = new InjectorConfiguration();
		
		configurator.configure(config);

		
		//--- Get configuration elements 
		
		HashMap<Class<?>, Class<?>>     implementationsClasses  = config.getImplementationClasses();
		 
		HashMap<Class<?>, Provider<?>>  implementationProviders = config.getImplementationProviders();
		
		String[] implementationsConventions = config.getImplementationConventions() ;
		 
		InterceptorProvider[] interceptorProviders = config.getInterceptorProviders();
		
		
		//--- Create the injector factory with the configuration elements
		Injector injector = new InjectorImpl(name, implementationsClasses, implementationsConventions, implementationProviders, interceptorProviders);
		
		return injector ;
	}
}
